import os
import re
import datetime

from openpyxl.styles.builtins import output

from tools import *

import tools
from pathlib import Path
import pandas as pd

from pandas import DataFrame, Series

pd.set_option('display.unicode.east_asian_width', True)


def show_all_date(lst: list):
    """
    显示出现的所有的日期
    """
    print(sorted(set(lst)))


def calc_上机成绩(上机='上机1') -> DataFrame:
    se_files_name = get_files_name(f"{BASE_PATH_微服务}/{上机}/提交")

    se_学号 = get_学号_segment(se_files_name).astype(int)
    # se_姓名 = get_姓名_segment(se_files_name)
    # se_real_日期 = get_real_日期_segment(se_files_name)
    se_logical_日期 = get_logical_日期_segment(se_files_name)

    se_logical_date = convert_mmdd_to_date(se_logical_日期)
    # print(se_logical_date)

    se_成绩 = tools.calculate_date_scores(se_logical_date, base_score=22)
    se_成绩 = se_成绩.apply(lambda x: x if x >= 0 else 0)

    return pd.DataFrame({'学号': se_学号, 上机: se_成绩})


def get_上机报告_提交记录(上机='上机1') -> DataFrame:
    se_files = get_files_name(f"{BASE_PATH_微服务}\{上机}\提交", return_type="name_only")

    se_学号 = get_学号_segment(se_files).astype(int)
    se_姓名 = get_姓名_segment(se_files).astype(str)
    se_real_日期 = get_real_日期_segment(se_files).astype(str)

    return pd.DataFrame({'学号': se_学号, '姓名': se_姓名, 上机: se_real_日期})


def concat_上机报告_提交记录(output_path=None):
    df_学生_信息 = get_学生_信息()

    df_上机1_提交记录 = get_上机报告_提交记录('上机1')
    df_上机2_提交记录 = get_上机报告_提交记录('上机2')
    df_上机3_提交记录 = get_上机报告_提交记录('上机3')
    df_上机4_提交记录 = get_上机报告_提交记录('上机4')

    # df_上机1_提交记录.rename(columns={'提交日期': '上机1'}, inplace=True)
    # df_上机2_提交记录.rename(columns={'提交日期': '上机2'}, inplace=True)
    # df_上机3_提交记录.rename(columns={'提交日期': '上机3'}, inplace=True)
    # df_上机4_提交记录.rename(columns={'提交日期': '上机4'}, inplace=True)

    df_merged = merge_student_dataframes(df_学生_信息,
                                         df_上机1_提交记录,
                                         df_上机2_提交记录,
                                         df_上机3_提交记录,
                                         df_上机4_提交记录)

    # 如果需要，保存到Excel
    if output_path:
        df_merged.to_excel(output_path, index=False)
        print(f"\n✅ 所有上机报告提交记录合并完成! 文件已保存至: {output_path}\n")
    return df_merged


def concat_上机报告_成绩(output_path=None):
    df_学生_信息 = get_学生_信息()

    df_上机1_成绩 = calc_上机成绩('上机1')
    df_上机2_成绩 = calc_上机成绩('上机2')
    df_上机3_成绩 = calc_上机成绩('上机3')
    df_上机4_成绩 = calc_上机成绩('上机4')

    df_merged = merge_student_dataframes(df_学生_信息,
                                         df_上机1_成绩,
                                         df_上机2_成绩,
                                         df_上机3_成绩,
                                         df_上机4_成绩)

    # 如果需要，保存到Excel
    if output_path:
        df_merged.to_excel(output_path, index=False)
        print(f"\n✅ 所有上机报告提交记录合并完成! 文件已保存至: {output_path}\n")

    return df_merged

# 使用示例
if __name__ == "__main__":
    path1 = f"{BASE_PATH_微服务}\上机报告提交_汇总.xlsx"
    df = concat_上机报告_提交记录(path1)
    # print(df)

    path2 = f"{BASE_PATH_微服务}\上机报告成绩_汇总.xlsx"
    df = concat_上机报告_成绩(path2)
    # print(df)
